-- ABS 积分召唤活动

local Config = require("Config")
local AbsActExcel = require("excel.absAct")
local Lang = require("common.Lang")
local Util = require("common.Util")
local Msg = require("core.Msg")
local AbsActDefine = require("absAct.AbsActDefine")
local ObjHuman = require("core.ObjHuman")
local Broadcast = require("broadcast.Broadcast")
local MangHeLogic = require("absAct.MangHeLogic")
local MailExcel = require("excel.mail")
local MailManager = require("mail.MailManager")
local CommonDB = require("common.CommonDB")
local AbsActLogic = require("absAct.AbsActLogic")
local HeroGrid = require("hero.HeroGrid")
local DrawCardLogic = require("drawCard.DrawCardLogic")
local Log = require("common.Log")
local HeroBook = require("hero.HeroBook")
local HeroExcel = require("excel.hero")
local HeroLogic = require("hero.HeroLogic")
local ChatPaoMaLogic = require("chat.ChatPaoMaLogic")

function isOpen(human, YYInfo, funcConfig)
    return AbsActLogic.isStarted(human, funcConfig.funcID)
end

function isActive(human, YYInfo, funcConfig)
    return not isOpen(human, YYInfo, funcConfig)
end

function isRed(human, YYInfo, funcConfig)
    return false
end

function getAndSendMsg(human, id, config)
    local absAct = human.db.absAct[id]
    if not absAct then return end

    local actId = config.actId
    local msgRet = Msg.gc.GC_ABS_ACT_JIFEN_DRAW_QUERY
    local jifenDrawConfig = AbsActExcel.absJifenDraw[actId]
    if not jifenDrawConfig then return end

    local len = 0
    for k, config in ipairs(jifenDrawConfig.heroList) do
       len = len + 1
       if len > #msgRet.list then

          break
       end

       local net = msgRet.list[len]
       if net then
          net.id = k
          net.cur = absAct[k] or 0 
          net.max = config[3]
          net.cost = config[2]
          HeroGrid.makeHeroSimpleByID(net.hero, config[1])
       end
    end
    msgRet.list[0] = len
    msgRet.randomCost = DrawCardLogic.MAX_JIFEN
    msgRet.curJifen = DrawCardLogic.getJifen(human)
    Msg.send(msgRet, human.fd)
end

-- 积分购买
function buy(human, id, actID)
   local state,endTime, starTime = AbsActLogic.isStarted(human, actID)
   if not state then return end

   local config = AbsActExcel.absActivity[actID]
   if not config then return end

   local jifenDrawConfig = AbsActExcel.absJifenDraw[config.actId]
   if not jifenDrawConfig then return end

   local absAct = human.db.absAct[actID]
   if not absAct then 
      return 
   end

   local heroConfig = jifenDrawConfig.heroList[id]
   if not heroConfig then return end

   -- 扣除积分
   if DrawCardLogic.getJifen(human) < heroConfig[2] then
      return Broadcast.sendErr(human, Lang.DRAWCARD_ERR_NOJIFEN)  
   end
   
   absAct[id] = absAct[id] or 0
   if absAct[id] >= heroConfig[3] then
      return
   end

   DrawCardLogic.updateJifen(human, -heroConfig[2])
   absAct[id] = absAct[id] + 1

   local heroID = heroConfig[1]
   local drawConfig = HeroExcel.hero[heroID]
   ChatPaoMaLogic.broadcast(human, ChatPaoMaLogic.PAOMA_TYPE_BROAD_TYPE4, drawConfig.grade, heroID)
   local isNew = not HeroBook.isGet(human, drawConfig.id, drawConfig.star)
   local heroIndex, fenjielist = HeroLogic.addHero(human, heroID, nil, 1, "abs_jifenDraw")
   Log.write(Log.LOGID_OSS_DRAWCARD, human.db._id, human.db.account, human.db.name, human.db.lv, DrawCardLogic.DRAWCARD_ID4, heroID, 0, 0, 0, DrawCardLogic.getJifen(human))
   DrawCardLogic.sendDrawOp(human, DrawCardLogic.DRAWCARD_ID4, 0, {heroID}, fenjielist, {isNew}, {heroIndex}, AbsActDefine.ABS_ACT_TYPE_7)
end